package com.shujia.wyh.day20;

import java.util.ArrayList;

/*
        增强for循环是在JDK1.5之后出现的
        到目前为止，我们学过哪些是JDK1.5之后再出现的特性呢？
        Scanner,枚举，包装类，泛型

        增强for循环：
            用来简化数组和Collection集合的遍历

        格式：
            for(元素的数据类型 变量名(自定义) : 数组/Collection集合){
                直接使用变量即可，这里变量就是元素。
            }

       好处：简化数组和Collection集合的遍历

       注意事项：在使用使用之前确保遍历的对象不是null

       增强for循环本来的目的是遍历增强for循环的，是用来替代迭代器的。


 */
public class ForDemo {
    public static void main(String[] args) {
        //定义一个数组
        int[] arr = {11, 22, 33, 44, 55};

        //普通for循环
//        for (int i = 0; i < arr.length; i++) {
//            System.out.println(arr[i]);
//        }
//        System.out.println("使用增强for循环遍历：");
//        for(int x : arr){
//            System.out.println(x);
//        }
        System.out.println("=========================================");
        //创建集合对象
        ArrayList<String> strings = new ArrayList<>();
        strings.add("hello");
        strings.add("world");
        strings.add("java");
        strings.add("bigdata");
        strings.add("hadoop");
        strings.add("hive");

        //增强for循环遍历
        for(String s:strings){
            System.out.println(s);
        }

//        strings = null;

        //NullPointerException  今后我们在做增强for循环的时候，要先进行一次非空判断
//        if(strings!=null){
//            for(String s:strings){
//                System.out.println(s);
//            }
//        }

        //是用来替代迭代器的。
        //如何去验证增强for循环就是用来替代迭代器的呢？
        //并发修改异常验证
//        for(String s:strings){
//            if("java".equals(s)){
//                strings.add("flink"); //ConcurrentModificationException
//            }
//        }





    }
}
